package com.ainge.easystudy.designpattern.template;

/**
 * 工作抽象模板
 *
 * @author: Ainge
 * @Time: 2021/4/25 21:36
 */
public abstract class WorkTemplate {


    /**
     * 资深程序员的工作
     */
    protected final void doWork() {
        // c.v代码
        this.code();
        // 写bug
        this.fixesBug();
        // 与产品交流
        this.fuckPd();
        // 钩子
        if (needRelax()) {
            doSomeRelaxThing();
        }

    }

    private void code() {
        System.out.println("编写代码");
    }

    private void fixesBug() {
        System.out.println("修复bug");
    }

    private void fuckPd() {
        System.out.println("向产品经理问好");
    }

    /**
     * 是否需要划水
     *
     * @return
     */
    public abstract boolean needRelax();

    /**
     * 干一些划水的事情
     */
    protected abstract void doSomeRelaxThing();

}
